// src/store/cardStore.ts
import { defineStore } from 'pinia';
import { getDkType } from '@/api/his';
import { ICardInfo } from '@/api/typing';
// 导入基础图片资源（与组件中一致）
import Sfz from "@/assets/images/sfz1.png";
import Sbk from "@/assets/images/sbk1.png";
import Yyjzk from "@/assets/images/jzk.png";
import Ybdzpz from "@/assets/images/dzybk.png";
import Jmjkk from "@/assets/images/jkk.png";
import Sldl from "@/assets/images/sldl1.png";
import {READ_CARD_API, TITLE_API} from '~/src/config';

// 定义基础数据baseTypes（与组件原数据一致，移至Pinia方便复用）
const baseTypes: ICardInfo[] = [
    {id: '1', type: '1', name: '身份证', img: Sfz },
    {id: '2', type: '2', name: '社保卡', img: Sbk },
    {id: '3', type: '3', name: '医保电子凭证', img: Ybdzpz },
    {id: '4', type: '4', name: '医院就诊卡', img: Yyjzk },
    {id: '5', type: '5', name: '居民健康卡', img: Jmjkk },
    {id: '6', type: '6', name: '扫脸登录', img: Sldl },
];

interface CardState {
    cardTypes: ICardInfo[]; // 存储接口返回的卡片类型数据
    baseTypes: ICardInfo[]; // 存储基础数据
    isLoaded: boolean; // 标记是否已完成首次请求
    Usertitle: string;//用户进入的功能标题
}

export const useCardStore = defineStore('readCard', {
    state: (): CardState => ({
        cardTypes: [], // 初始为空数组
        baseTypes: baseTypes, // 初始化基础数据
        isLoaded: false, // 初始未加载
        Usertitle: "", //用户进入的功能标题
    }),

    actions: {
        // 添加用户进入标题
        setUsertitle(title: string) {
            this.Usertitle = title;
        },
        // 仅首次请求接口，存储原始数据
        async fetchCardData() {
            if (this.isLoaded) return; // 已加载过则直接返回，不重复请求
            try {
                if (READ_CARD_API){
                    const res = await getDkType({});
                    // 存储接口返回的卡片数据（即使为空数组）
                    this.cardTypes = res.rows || [];
                }else{
                    console.log('不启用api接口地址');
                    this.cardTypes = []; // 未启用接口时设为空数组
                }
            } catch (error) {
                console.error('获取卡片类型数据失败:', error);
                this.cardTypes = []; // 请求失败时设为空数组
            } finally {
                this.isLoaded = true; // 无论成功/失败，都标记为已加载
            }
        }
    },

    getters: {
        // 计算属性：返回最终要用的数据（空数组时用baseTypes）
        finalCardTypes(): ICardInfo[] {
            // 若接口数据为空数组，使用基础数据；否则用接口数据
            return this.cardTypes.length === 0 ? this.baseTypes : this.cardTypes;
        }
    }
});
